package model

import "github.com/gogf/gf/v2/util/gmeta"

type SiteIdRes struct {
	Id string `json:"id"  dc:"站点id"`
}
type SiteIdReq struct {
	Id string `json:"id"  dc:"站点id"  v:"required#站点id必填"`
}

type SiteInfoRes struct {
	SiteName     string   `json:"siteName" dc:"站点的名字" v:"required#站点的名字必填"`
	SiteAddress  string   `json:"siteAddress"  dc:"站点的简要地址" v:"required#站点的地址必填"`
	CompanyId    int64    `json:"companyId"  dc:"公司id"  v:"required#公司id必填"`
	SiteProvince string   `json:"siteProvince"  dc:"站点所在的省"`
	SitePhone    string   `json:"sitePhone"  dc:"站点的联系电话" v:"phone#手机号不正确"`
	SiteImgs     []string `json:"siteImgs"   dc:"站点图片集" `
	SiteRemark   string   `json:"siteRemark"   dc:"站点备注" v:"length:1,200#站点备注1~200字之间"`
	SiteCity     string   `json:"siteCity"  dc:"站点所在的市"  `
	SiteArea     string   `json:"siteArea"   dc:"站点所在的区" `
	*SiteLocation
}

type SiteLocation struct {
	SiteLongitude float64 `json:"siteLongitude"  dc:"站点的经度" v:"required|float#站点的经度必填|经度不是一个正确的浮点数"`
	SiteLatitude  float64 `json:"siteLatitude"  dc:"站点的纬度" v:"required|float#站点的纬度必填|纬度不是一个正确的浮点数"`
}

// SiteLinearDistance 计算当前位置和站点的距离
type SiteLinearDistance struct {
	*SiteLocation
	Id string `json:"id"  dc:"站点id"`
}

// SiteLinearDistanceInfo 计算当前位置和站点的距离方法
type SiteLinearDistanceInfo struct {
	Longitude float64 `json:"longitude"  dc:"当前位置的经度" v:"required|float#站点的经度必填|经度不是一个正确的浮点数"`
	Latitude  float64 `json:"latitude"  dc:"当前位置的纬度" v:"required|float#站点的纬度必填|纬度不是一个正确的浮点数"`
	*SiteLocation
}

// SiteLinearDistanceRes 返回距离
type SiteLinearDistanceRes struct {
	LinearDistance float64 `json:"linearDistance" dc:"返回距离/m"`
}

type SiteIdAndInfoRes struct {
	SiteIdReq
	SiteInfoRes
}

type SiteDbOderEquipmentRes struct {
	gmeta.Meta `orm:"table:lot_site"`
	SiteIdAndInfoRes
}

type SiteDbRes struct {
	gmeta.Meta `orm:"table:lot_site"`
	SiteIdAndInfoRes
	CreatedAt     string                `json:"createdAt" dc:"创建时间" `
	Distance      float64               `json:"distance" dc:"当前位置到该站点的距离"`
	EquipmentList []*EquipmentDbInfoRes `json:"equipmentList" dc:"电桩列表" orm:"with:site_id=id"`
}

type SiteInfoDbRes struct {
	gmeta.Meta `orm:"table:lot_site"`
	SiteIdAndInfoRes
}

type SiteSearchList struct {
	SiteName  string `json:"siteName" dc:"站点的名字"`
	Id        int64  `json:"id"  dc:"id"`
	CompanyId int64  `json:"companyId"  dc:"公司id"`
	*Paging
}

type SitePeripheryList struct {
	Longitude  float64 `json:"longitude"  dc:"当前位置的经度" v:"required|float#站点的经度必填|经度不是一个正确的浮点数"`
	Latitude   float64 `json:"latitude"  dc:"当前位置的纬度" v:"required|float#站点的纬度必填|纬度不是一个正确的浮点数"`
	RangeValue int     `json:"rangeValue" d:"30"  dc:"范围值1（1公里）~100（100公里）之间,默认值是30" v:"between:1,100|integer#范围值不在范围内|范围值必须是一个整数"`
	*Paging
}

type SiteListPageRes struct {
	List []*SiteDbRes `json:"list"  dc:"站点列表"`
	PutPage
}
